﻿<!DOCTYPE html>
<html lang="en">
<head>
	
	<!-- Basic -->
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Hendrix - Personal Portfolio HTML Template</title>
	<meta name="description" content="">
	<meta name="keywords" content="">
	
	<!-- Mobile Specific Metas -->
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
	
	<!-- Load Fonts -->
	<link href="https://fonts.googleapis.com/css?family=Kaushan+Script%7CPoppins:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
	
	<!-- CSS -->
	<link rel="stylesheet" href="css/basic.css" />
	<link rel="stylesheet" href="css/layout.css" />
	<link rel="stylesheet" href="css/blogs.css" />
	<link rel="stylesheet" href="css/ionicons.css" />
	<link rel="stylesheet" href="css/magnific-popup.css" />
	<link rel="stylesheet" href="css/animate.css" />
	
	<!--[if lt IE 9]>
	<script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>
	<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
	<![endif]-->
	
	<!-- Favicon -->
	<link rel="shortcut icon" href="images/favicons/favicon.ico">
	
</head>

<body>
	
	<!-- Page -->
	<div class="page">

		<!-- Preloader -->
		<div class="preloader">
			<div class="centrize full-width">
				<div class="vertical-center">
					<div class="spinner">
						<div class="double-bounce1"></div>
						<div class="double-bounce2"></div>
					</div>
				</div>
			</div>
		</div>

		<header class="header">
			<div class="fw">
				<div class="logo">
					<a href="#">BOLG</a>
				</div>
				<a href="#" class="menu-btn"><span></span></a>
				<div class="top-menu">
					<ul>
						<li><a href="blog.html">Back to Posts</a></li>
					</ul>
					<a href="#" class="close"></a>
				</div>
			</div>
		</header>
		
		<!-- Container -->
		<div class="container">

			<!-- Section Started -->
			<div class="section started-blog">
				<div class="slide" style="background-image: url(images/slide-bg-1.jpg);"></div>
			</div>

			<!-- Section Blog -->
			<div class="section blog-single align-left" id="blog-section">
				<div class="fw">
					<div class="row">
						<div class="col col-m-12 col-t-12 col-d-12">
							
							<div class="post-box">

								<h1>Maven Or Gradle？究极实测对比，孰强孰弱一看便知！</h1>
								<div class="blog-detail">Posted <span>14 September 2021</span></div>

								<div class="blog-image">
									<img src="images/blog/gradle/gradletubiao.png" alt="">
								</div>
								<div class="blog-image">
									<img src="images/blog/gradle/maventubiao.png" alt="">
								</div>

								<div class="blog-content">
									<p>我们习惯了使用Maven构建工具，现在市面上大多数也都是使用的Maven，但是Gradle的出现，究竟哪个更好用哪个更有优势呢？</p>
									<p>下载安装，可见<a href="https://blog.csdn.net/John_D_B_Lee/article/details/117906536?spm=1001.2014.3001.5501">原博客</a></p>
									<blockquote>
										相同之处
									</blockquote>

									<ul class="list-style">
										<li> 工具的作用相同：都是项目管理工具，都可以解决构建管理、依赖管理问题、项目自动化打包部署等操作。</li>
										<li> 依赖管理思想相同：用GroupID（组id）、ArtifactID（项目id）和Version（版本号）配合为唯一标识一个依赖项。</li>
										<li> 存储仓库思想相同：远程中央仓库（世界公用）、本地仓库（本地计算机上可创建）和私服（公司搭建的仓库）。</li>
										<li> 多模块构建思想相同：都可以对整个项目或其中特定子项目中进行配置。</li>
										<li> 项目目录结构相同：source、resource、test source、test resource等相应资源的标准结构。</li>
									</ul>
<!--									<p>Unpleasant astonished an diminution up partiality. Noisy an their of meant. Death means up civil do an offer wound of. Called square an in afraid direct. Resolution diminution conviction so mr at unpleasing simplicity no. No it as breakfast up conveying earnestly immediate principle. Him son disposed produced humoured overcame she bachelor improved. Studied however out wishing but inhabit fortune windows.</p>-->
<!--									<div class="post-lightbox row">-->
<!--										<a href="images/works/work1.jpg" class="col col-m-12 col-t-4 col-d-4 lightbox-image">-->
<!--											<img src="images/works/work1.jpg" alt="">-->
<!--										</a>-->
<!--										<a href="images/works/work2.jpg" class="col col-m-12 col-t-4 col-d-4 lightbox-image">-->
<!--											<img src="images/works/work2.jpg" alt="">-->
<!--										</a>-->
<!--										<a href="images/works/work3.jpg" class="col col-m-12 col-t-4 col-d-4 lightbox-image">-->
<!--											<img src="images/works/work3.jpg" alt="">-->
<!--										</a>-->
<!--									</div>-->

									<p>
										普通Java项目目录结构:
									</p>
									<div class="blog-image">
										<img src="images/blog/gradle/gradle1.png" alt="">
									</div>

									<p>
										普通Java项目目录结构:
									</p>
									<div class="blog-image">
										<img src="images/blog/gradle/gradle2.png" alt="">
									</div>


									<blockquote>
										不同之处
									</blockquote>

									<ul class="list-style">
										<li> 诞生时间，诞生原因不同--Maven于2004年诞生，Gradle于2012年。
											Maven出现是为了解决2000年诞生的项目构建工具：Ant存在的问题
											而Gradle出现也是为了解决Maven存在的问题。</li>
										<li> 项目构建方式不同--maven使用xml文件配置项目,Gradle在build.gradle文件中配置</li>
										<li> 配置细节不同--scoup依赖作用范围、动态依赖版本、多模块依赖、配置继承、插件管理</li>
										<li> 执行原理不同</li>
									</ul>

									<blockquote>
										构建速度比较
									</blockquote>
									<p>
										我们对于同一个项目使用不同的构建工具，一起来测试一下相同操作的的时间。<br>
										我简单写了几个.java源码，maven项目和gradle项目代码、目录结构、依赖坐标都相同。我们对同一种操作多次尝试运行–
									</p>
									<p>
										1,clean<br>
										Maven：125ms<br>
										Gradle:25ms<br>
									</p>

									<div class="blog-image">
										<img src="images/blog/gradle/gradle5.png" alt="">
									</div>
									<div class="blog-image">
										<img src="images/blog/gradle/gradle6.png" alt="">
									</div>
									<p>
										2,compile<br>
										Maven：450ms<br>
										Gradle:34ms<br>
									</p>

									<div class="blog-image">
										<img src="images/blog/gradle/gradle7.png" alt="">
									</div>
									<div class="blog-image">
										<img src="images/blog/gradle/gradle8.png" alt="">
									</div>
									<p>
										3,test<br>
										Maven：739ms<br>
										Gradle:325ms<br>
									</p>

									<div class="blog-image">
										<img src="images/blog/gradle/gradle9.png" alt="">
									</div>
									<div class="blog-image">
										<img src="images/blog/gradle/gradle10.png" alt="">
									</div>
									<p>
										4.install<br>
										Maven：885ms<br>
										Gradle:65ms<br>
									</p>

									<div class="blog-image">
										<img src="images/blog/gradle/gradle11.png" alt="">
									</div>
									<div class="blog-image">
										<img src="images/blog/gradle/gradle12.png" alt="">
									</div>


									<blockquote>
										工作原理：
									</blockquote>

									<p>
										他们虽然都是使用Java开发的工具，但为什么Gradle的速度更快呢？因为执行原理不同，因为Maven和Gradle核心代码都是用Java语言编写的，所有他们执行任何任务（Lifecycle）都是启动一个JVM进程。一个JVM的启动是很慢，因为需要加载所有的jar包，但是区别：<br>
										Maven：要执行一个任务（如compile），需要启动一个JVM进程，任务完成后，JVM进程销毁。<br>
										Gradle：要执行一个任务（如compile），首先会启动一个ClientJVM，它非常轻量，负责接收、转发请求，只去后台链接称为DaemonJVM通信，把任务和参数发送给Daemon，Daemon执行结束后，结果返回给ClientJvm。<br>
										然后ClientJVM被销毁，而Daemon则会一直存在，默认存在3小时，如果需要多次运行，只需要第一次预热，减少了启动开销。如下图：<br>
										另外：<br>
										gradle在多个版本的同一个类型jar包选择中，如果有版本高的，他会默认选择最高版本的jar，可能会出现间接依赖的高版本的包出现编译报错。<br>
										可使用force=true，来强制指定某个版本的jar包。
									</p>
									<div class="blog-image">
										<img src="images/blog/gradle/gradle14.png" alt="">
									</div>

								</div>

							
								<form id="blog-form" class="contact-form" method="post">
									<h3 class="subtitle">Leave a Reply</h3>
									<div class="row">
										<div class="col col-m-12 col-t-12 col-d-6">
											<div class="group-val">
												<input type="text" name="name" placeholder="Your Name" />
											</div>
											<div class="group-val">
												<input type="text" name="email" placeholder="Your Email" />
											</div>
											<div class="group-val ct-gr">
												<textarea name="message" placeholder="Message"></textarea>
											</div>
											<a href="#" class="btn btn_animated" onclick="$('#blog-form').submit(); return false;"><span class="circle">Send Message</span></a>
										</div>
									</div>
								</form>
								<div class="alert-success">
									<p>Thanks, your message is sent successfully. We will contact you shortly!</p>
								</div>

							</div>

						</div>
					</div>
				</div>
			</div>

			<!-- Footer -->
			<footer class="align-center">
				<div class="socials">
					<a target="blank" href="https://www.facebook.com"><i class="icon ion ion-social-facebook"></i></a>
					<a target="blank" href="https://github.com"><i class="icon ion ion-social-github"></i></a>
					<a target="blank" href="https://twitter.com"><i class="icon ion ion-social-twitter"></i></a>
					<a target="blank" href="https://www.youtube.com"><i class="icon ion ion-social-youtube"></i></a>
					<a target="blank" href="https://plus.google.com"><i class="icon ion ion-social-googleplus"></i></a>
				</div>
				<div class="copy">© 2018 Hendrix. all rights By <a href="http://www.bootstrapmb.com/">bootstrapmb</a>.</div>
			</footer>
			
		</div>

	</div>
	
	<!-- jQuery Scripts -->
	<script src="js/jquery.min.js"></script>
	<script src="js/jquery.validate.js"></script>
	<script src="js/masonry.pkgd.js"></script>
	<script src="js/imagesloaded.pkgd.js"></script>
	<script src="js/masonry-filter.js"></script>
	<script src="js/magnific-popup.js"></script>
	<script src="js/jquery.mb.YTPlayer.js"></script>
	<script src="js/particles.js"></script>
	<script src="js/typed.js"></script>
	
	<!-- Main Scripts -->
	<script src="js/main.js"></script>
	
</body>
</html>